#include <stdio.h>
#include <stdlib.h>
#include <error.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int simple_system(const char* command)
{
    pid_t childpid = fork();
    int status;
    switch(childpid)
    {
        case -1: //error
            return -1;
        case 0: //子进程  sh为一个shell可执行程序  -c参数将shell命令进行解析 
            execl("/bin/sh", "sh", "-c", command, NULL);
            //execl失败 调用_exit(127);
            _exit(127);
        default: //父进程
            //等待子进程执行完成
            if(waitpid(childpid, &status, 0) == -1)
            {
                error(1, errno, "waitpid");
            }
            else{
                return status;
            }
    }
}
int main(int argc, char* argv[])
{
    simple_system(argv[1]);
    return 0;
}